package package01;

import java.util.Queue;
import java.util.concurrent.LinkedBlockingDeque;

/**
 * @Description TODO
 * @Author zzj
 * @Date 2020/7/23 15:40
 */
public class Test {
    public static void main(String[] args) {
        //指定队列的大小
        Queue<Integer> queue = new LinkedBlockingDeque<>(10);

/*      // 超出10报错
        // Exception in thread "main" java.lang.IllegalStateException: Deque full
        for (int i = 0; i < 11; i++) {
            queue.add(i);
        }*/

        for (int i = 0; i < 10; i++) {
            queue.add(i);
        }

        // 向队列尾部追加元素，当队列满了，返回false
        // offer相较于add更好用
        System.out.println(queue.offer(11));  // false

        // 获取队列的大小
        System.out.println(queue.size()); // 10

        // 打印整个队列
        System.out.println(queue); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

        /*// 移除队列的头部
        Integer remove = queue.remove(); // 队列为空会抛出异常
        System.out.println(queue);*/

        // 获取队列的头部
        System.out.println(queue.peek());  //0 队列为空返回null

        // 获取队列头部并移除
        // 相较于remove更好
        System.out.println(queue.poll());  //0 队列为空返回null

        System.out.println(queue); // [1, 2, 3, 4, 5, 6, 7, 8, 9]


    }
}
